package com.itcam.phaseii.exception_;

/**
 * 异常的基本概念：<p>
 * Java语音中将程序执行中发生的不正常情况称为“异常”<p>
 * 1.Error：Java虚拟机无法解决的严重问题。<p>
 * 2.Exception：其他因编译错误或偶然的外在因素导致的一般性问题，可以使用针对性的代码进行处理。<p>
 * <p>
 * 常见的运行时异常包括<p>
 * 1) NullPointerException 空指针异常<p>
 * 2) ArithmeticException 数学运算异常<p>
 * 3) ArrayIndexOutOfBoundsException 数组下标越界异常<p>
 * 4) ClassCastException 类型转换异常<p>
 * 5) NumberFormatException 数字格式不正确异常<p>
 */

public class Exception01 {
    public static void main(String[] args) {
        int num1 = 10;
        int num2 = 0; // Scanner();

//        int res = num1 / num2;
        //1. num1 / num2 => 10 / 0
        //2. 当执行到num1 / num2 因为num2 = 0, 程序就会出现(抛出)异常ArithmeticException
        //3. 当抛出异常后，程序就退出，崩溃了, 下面的代码就不在执行
        //4. 大家想想这样的程序好吗? 不好，不应该出现了一个不算致命的问题，就导致整个系统崩溃
        //5. java设计者，提供了一个叫异常处理机制来解决该问题
        try {
            int res = num1 / num2;
        } catch (java.lang.Exception e) {
//            throw new RuntimeException(e);
            System.out.println("出现异常的原因: " + e.getClass() + " " + e.getMessage() + " ");//输出异常信息
        }

        System.out.println("程序继续运行....");
    }
}
